home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK2.toast / Development Kits (Disc 2) / TEC 1.2.1 / Headers & Libs / Interfaces / TextEncodingPlugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-11-18  |  7.4 KB  |  186 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        TextEncodingPlugin.h
  3.  
  4.      Contains:    Required interface for Text Encoding Converter-Plugins
  5.  
  6.      Copyright:    © 1984-1997 by Apple Computer, Inc.
  7.                  All rights reserved.
  8.  
  9.  
  10. */
  11. #ifndef __TEXTENCODINGPLUGIN__
  12. #define __TEXTENCODINGPLUGIN__
  13.  
  14. #ifndef __TEXTENCODINGCONVERTER__
  15. #include <TextEncodingConverter.h>
  16. #endif
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22. #if PRAGMA_IMPORT_SUPPORTED
  23. #pragma import on
  24. #endif
  25.  
  26. #if PRAGMA_ALIGN_SUPPORTED
  27. #pragma options align=mac68k
  28. #endif
  29.  
  30. /*
  31. ####################################################################################
  32.         Structs
  33. ####################################################################################
  34. */
  35. struct TECBufferContextRec {
  36.     TextPtr                         textInputBuffer;
  37.     TextPtr                         textInputBufferEnd;
  38.     TextPtr                         textOutputBuffer;
  39.     TextPtr                         textOutputBufferEnd;
  40.  
  41.     TextEncodingRunPtr                 encodingInputBuffer;
  42.     TextEncodingRunPtr                 encodingInputBufferEnd;
  43.     TextEncodingRunPtr                 encodingOutputBuffer;
  44.     TextEncodingRunPtr                 encodingOutputBufferEnd;
  45.  
  46. };
  47. typedef struct TECBufferContextRec TECBufferContextRec;
  48.  
  49. struct TECPluginStateRec {
  50.  
  51.     UInt8                             state1;
  52.     UInt8                             state2;
  53.     UInt8                             state3;
  54.     UInt8                             state4;
  55.  
  56.     UInt32                             longState1;
  57.     UInt32                             longState2;
  58.     UInt32                             longState3;
  59.     UInt32                             longState4;
  60.  
  61. };
  62. typedef struct TECPluginStateRec TECPluginStateRec;
  63.  
  64. struct TECConverterContextRec {
  65.  
  66.                                                                 /* public - manipulated externally and by plugin*/
  67.     Ptr                             pluginRec;
  68.     TextEncoding                     sourceEncoding;
  69.     TextEncoding                     destEncoding;
  70.     UInt32                             reserved1;
  71.     UInt32                             reserved2;
  72.     TECBufferContextRec             bufferContext;
  73.                                                                 /* private - manipulated only within Plugin*/
  74.     UInt32                             contextRefCon;
  75.     ProcPtr                         conversionProc;
  76.     ProcPtr                         flushProc;
  77.     ProcPtr                         clearContextInfoProc;
  78.     UInt32                             options1;
  79.     UInt32                             options2;
  80.     TECPluginStateRec                 pluginState;
  81.  
  82. };
  83. typedef struct TECConverterContextRec TECConverterContextRec;
  84.  
  85. struct TECSnifferContextRec {
  86.  
  87.                                                                 /* public - manipulated externally*/
  88.     Ptr                             pluginRec;
  89.     TextEncoding                     encoding;
  90.     ItemCount                         maxErrors;
  91.     ItemCount                         maxFeatures;
  92.     TextPtr                         textInputBuffer;
  93.     TextPtr                         textInputBufferEnd;
  94.     ItemCount                         numFeatures;
  95.     ItemCount                         numErrors;
  96.                                                                 /* private - manipulated only within Plugin*/
  97.     UInt32                             contextRefCon;
  98.     ProcPtr                         sniffProc;
  99.     ProcPtr                         clearContextInfoProc;
  100.     TECPluginStateRec                 pluginState;
  101. };
  102. typedef struct TECSnifferContextRec TECSnifferContextRec;
  103.  
  104. /*
  105. ####################################################################################
  106.         Functional Messages
  107. ####################################################################################
  108. */
  109. typedef OSStatus (*TECPluginNewEncodingConverterPtr)(TECObjectRef *newEncodingConverter, TECConverterContextRec *plugContext, TextEncoding inputEncoding, TextEncoding outputEncoding);
  110. typedef OSStatus (*TECPluginClearContextInfoPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  111. typedef OSStatus (*TECPluginConvertTextEncodingPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  112. typedef OSStatus (*TECPluginFlushConversionPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  113. typedef OSStatus (*TECPluginDisposeEncodingConverterPtr)(TECObjectRef newEncodingConverter, TECConverterContextRec *plugContext);
  114. typedef OSStatus (*TECPluginNewEncodingSnifferPtr)(TECSnifferObjectRef *encodingSniffer, TECSnifferContextRec *snifContext, TextEncoding inputEncoding);
  115. typedef OSStatus (*TECPluginClearSnifferContextInfoPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  116. typedef OSStatus (*TECPluginSniffTextEncodingPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  117. typedef OSStatus (*TECPluginDisposeEncodingSnifferPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  118. typedef OSStatus (*TECPluginGetCountAvailableTextEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  119. typedef OSStatus (*TECPluginGetCountAvailableTextEncodingPairsPtr)(TECConversionInfo *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  120. typedef OSStatus (*TECPluginGetCountDestinationTextEncodingsPtr)(TextEncoding inputEncoding, TextEncoding *destinationEncodings, ItemCount maxDestinationEncodings, ItemCount *actualDestinationEncodings);
  121. typedef OSStatus (*TECPluginGetCountSubTextEncodingsPtr)(TextEncoding inputEncoding, TextEncoding subEncodings[], ItemCount maxSubEncodings, ItemCount *actualSubEncodings);
  122. typedef OSStatus (*TECPluginGetCountAvailableSniffersPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  123. typedef OSStatus (*TECPluginGetTextEncodingInternetNamePtr)(TextEncoding textEncoding, Str255 encodingName);
  124. typedef OSStatus (*TECPluginGetTextEncodingFromInternetNamePtr)(TextEncoding *textEncoding, ConstStr255Param encodingName);
  125. typedef OSStatus (*TECPluginGetCountWebEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  126. typedef OSStatus (*TECPluginGetCountMailEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  127. /*
  128. ####################################################################################
  129.         Dispatch Table Definition
  130. ####################################################################################
  131. */
  132.  
  133. enum {
  134.     kTECPluginDispatchTableVersion1 = 0x00010000,                /* 1.0 through 1.0.3 releases*/
  135.     kTECPluginDispatchTableVersion1_1 = 0x00010001,                /* 1.1 releases*/
  136.     kTECPluginDispatchTableVersion1_2 = 0x00010002,                /* 1.2 releases*/
  137.     kTECPluginDispatchTableCurrentVersion = kTECPluginDispatchTableVersion1_2
  138. };
  139.  
  140. struct TECPluginDispatchTable {
  141.  
  142.     TECPluginVersion                 version;
  143.     TECPluginVersion                 compatibleVersion;
  144.     TECPluginSignature                 PluginID;
  145.  
  146.     TECPluginNewEncodingConverterPtr  PluginNewEncodingConverter;
  147.     TECPluginClearContextInfoPtr     PluginClearContextInfo;
  148.     TECPluginConvertTextEncodingPtr  PluginConvertTextEncoding;
  149.     TECPluginFlushConversionPtr     PluginFlushConversion;
  150.     TECPluginDisposeEncodingConverterPtr  PluginDisposeEncodingConverter;
  151.  
  152.     TECPluginNewEncodingSnifferPtr     PluginNewEncodingSniffer;
  153.     TECPluginClearSnifferContextInfoPtr  PluginClearSnifferContextInfo;
  154.     TECPluginSniffTextEncodingPtr     PluginSniffTextEncoding;
  155.     TECPluginDisposeEncodingSnifferPtr  PluginDisposeEncodingSniffer;
  156.  
  157.     TECPluginGetCountAvailableTextEncodingsPtr  PluginGetCountAvailableTextEncodings;
  158.     TECPluginGetCountAvailableTextEncodingPairsPtr  PluginGetCountAvailableTextEncodingPairs;
  159.     TECPluginGetCountDestinationTextEncodingsPtr  PluginGetCountDestinationTextEncodings;
  160.     TECPluginGetCountSubTextEncodingsPtr  PluginGetCountSubTextEncodings;
  161.     TECPluginGetCountAvailableSniffersPtr  PluginGetCountAvailableSniffers;
  162.     TECPluginGetCountWebEncodingsPtr  PluginGetCountWebTextEncodings;
  163.     TECPluginGetCountMailEncodingsPtr  PluginGetCountMailTextEncodings;
  164.  
  165.     TECPluginGetTextEncodingInternetNamePtr  PluginGetTextEncodingInternetName;
  166.     TECPluginGetTextEncodingFromInternetNamePtr  PluginGetTextEncodingFromInternetName;
  167.  
  168. };
  169. typedef struct TECPluginDispatchTable TECPluginDispatchTable;
  170.  
  171.  
  172. #if PRAGMA_ALIGN_SUPPORTED
  173. #pragma options align=reset
  174. #endif
  175.  
  176. #if PRAGMA_IMPORT_SUPPORTED
  177. #pragma import off
  178. #endif
  179.  
  180. #ifdef __cplusplus
  181. }
  182. #endif
  183.  
  184. #endif /* __TEXTENCODINGPLUGIN__ */
  185.  
  186.